package myjava.p_classLoader;

/**
 * @Auther: cty
 * @Date: 2020/4/14 19:14
 * @Description:
 * @version: 1.0
 */
/**
 * 测试简单加密解密(取反)操作
 * @author 尚学堂高淇 www.sxt.cn
 *
 */
public class Demo04 {
    // 获取当前工程路径
    static String projectPath = System.getProperty("user.dir");
    // 指定文件输出路径
    static String path = projectPath+"/src/myjava/p_classLoader/mycode";

    public static void main(String[] args) throws Exception {
        //测试取反操作
//		int a = 3; //0000011
//		System.out.println(Integer.toBinaryString(a^0xff));

        // 加密字节码文件
        EncrptUtil.encrpt(path+"myjava.p_classLoader.Hi.class", path+"\\encrpt\\myjava.p_classLoader.Hi.class");

        //加密后的class文件，正常的类加载器无法加载，报classFormatError
//		FileSystemClassLoader loader = new FileSystemClassLoader(path+"\\encrpt\\");
//		Class<?> c = loader.loadClass("myjava.p_classLoader.Hi");
//		System.out.println(c);

        // 使用DecrptClassLoader类加载器加载
        DecrptClassLoader loader = new DecrptClassLoader(path+"\\encrpt\\");
        Class<?> c = loader.loadClass("myjava.p_classLoader.Hi");
        System.out.println(c);  // o:class myjava.p_classLoader.Hi
    }
}
